添加新的必填输入字段
变更场景
您希望更改触发器、动作或搜索中一个或多个表单字段输入的键。
对用户的影响
修改表单字段输入的键是一种破坏性变更。除非采取预防措施,否则更改现有表单字段输入的键会中断该字段在相关步骤中的映射。之前映射的值将被丢弃,从而导致数据丢失和/或错误。
最佳实践
- 避免更改表单字段输入的键
如果您的 API 端点需要在请求中使用不同的属性,请考虑更改属性键,而不是修改表单字段输入的键。表单字段输入的键并不一定需要与 API 预期的属性匹配。假设您有一个键为 first_name
的表单字段输入(右侧),并使用同名属性 first_name
(左侧)将该字段的值发送到您的 API:
body: {
first_name: bundle.inputData.first_name // 原始
}
然后,您的 API 变更,并期望请求属性为 firstname
(一个单词)。如下所示,您可以根据需要更改请求属性键(左侧)为 firstname
,同时仍然基于其原始键 (first_name
) 引用表单字段输入(右侧):
body: {
firstname: bundle.inputData.first_name // 新增 - 请求键和字段键可以不同
}
- 处理旧键和新键
如果无法简单地更改硬编码的请求属性的键:我们建议您设计触发器或动作来同时处理旧键和新键。使用上述示例,假设您不是硬编码请求属性,而是将 bundle.inputData
扩展到 API 请求的 body 中,从而使字段键和请求属性之间存在一对一关系。
body: {
...bundle.inputData // 原始 - 请求键与字段键绑定
}
不要更改表单字段输入的键,而是使用代码模式(Platform UI)或代码(Platform CLI)来修改请求。例如,下面我们创建一个新对象 payload
,它包含 bundle.inputData
中的所有字段以及更新后的属性 firstname
。然后删除旧属性 first_name
,并在请求中发送更新后的对象:
// 复制 bundle.inputData,并添加更新后的属性
const payload = { ...bundle.inputData, firstname: bundle.inputData.first_name };
// 删除旧属性
delete payload.first_name;
body = {
...payload, // 发送更新后的 payload
};
通过这种方法或类似方法,您可以根据需要更改请求,而无需修改字段键,从而避免破坏用户的映射。